package com.quectel.constant.core.partybuilding;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author zhangheng
 * @email nolan.zhang@quectel.com
 * @date 2023/6/19 11:22
 * @description new java file header...
 */
public class PartySurveyConstants {
    /**
     * 2c 党建考试
     */
    public static final String PARTY_EXAM = "#/party_online_exam_view?id=";
    /**
     * 2c 调查地址
     */
    public static final String PEOPLE_POLL = "#/people_poll?id=";
    /**
     * 2c 问卷地址
     */
    public static final String PEOPLE_VOTE = "#/people_vote?id=";

    /**
     * 问卷题目查询 选项ID
     */
    public static final String ANSWER_ID = "answerId";
    /**
     * 问卷题目查询 填空内容
     */
    public static final String QUERY_PARAM = "queryParam";

    /**
     * 问卷题目查询 选项分数
     */

    public static final String SCORES = "scores" ;
    /**
     * 问卷题目查询 题目类型
     */
    public static final String QUESTION_TYPE = "questionType";

    /**
     * 人员查询调查的状态标识
     */
    public static final String PARTY_SURVEY_STATUSES = "surveyStatuses";

    /**
     * 人员查询调查的状态标识
     */
    public static final String PARTY_SURVEY_QUERY_TIME = "surveyQueryTime";
    /**
     * 调查标记状态
     */
    @AllArgsConstructor
    public enum Category {
        /**
         * 民意调查
         */
        PUBLIC_OPINION_SURVEY((byte) 1,"PublicOpinionSurvey"),
        /**
         * 民主投票
         */
        DEMOCRATIC_VOTING((byte) 2,"DemocraticVoting"),
        ;
        @Getter
        private final Byte category;
        @Getter
        private final String mark;
    }


    /**
     * 调查标记状态
     */
    @AllArgsConstructor
    public enum RemindType {
        /**
         * 及时提醒
         */
        IN_TIME((byte) 1,0),
        /**
         * 不提醒
         */
        NOT_REMIND((byte) 2,0),
        /**
         * 提前15分钟
         */
        FIFTEEN_MINUTES_EARLY((byte) 3,15),

        /**
         * 提前30分钟
         */
        THIRTY_MINUTES_EARLY((byte) 4,30),
        /**
         * 提前60分钟
         */
        SIXTY_MINUTES_EARLY((byte) 5,60),
        ;
        @Getter
        private final Byte type;
        @Getter
        private final Integer minute;

        public static RemindType getByType(Byte type){
            for (RemindType remindType : RemindType.values()){
                if(remindType.getType().equals(type)){
                    return remindType;
                }
            }
            return null;
        }
    }


    /**
     * 调查标记状态
     */
    @AllArgsConstructor
    public enum MarkStatus {
        /**
         * 未发布
         */
        UN_PUBLISH((byte) 1),
        /**
         * 已发布
         */
        PUBLISHED((byte) 2),
        /**
         * 已取消
         */
        CANCELED((byte) 3),
        ;
        @Getter
        private final Byte status;
    }


    /**
     * 调查当前状态
     */
    @AllArgsConstructor
    public enum PartySurveyStatus {
        /**
         * 未发布
         */
        UN_PUBLISH((byte) 1),
        /**
         * 未开始
         */
        NOT_START((byte) 2),
        /**
         * 进行中
         */
        IN_PROGRESS((byte) 3),
        /**
         * 已结束
         */
        ENDED((byte) 4),
        /**
         * 已取消
         */
        CANCELED((byte) 5),

        ;
        @Getter
        private final Byte status;
    }

    /**
     * 党建相关的参会人范围
     */
    @AllArgsConstructor
    public enum QuestionType {
        /**
         * 单选题
         */
        SINGLE_CHOICE((byte) 1),
        /**
         * 多选题
         */
        MULTIPLE_CHOICE((byte) 2),
        /**
         * 图片单选
         */
        PIC_SINGLE_CHOICE((byte) 3),
        /**
         * 图片多选
         */
        PIC_MULTIPLE_CHOICE((byte) 4),
        /**
         * 填空
         */
        BLANK((byte) 5),
        /**
         * 评价
         */
        EVALUATE((byte) 6),
        ;
        @Getter
        private final Byte type;
    }


}
